package proxy.dyn;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
　* @return 代理实现层 做权限的控制 需要实现InvocationHandler接口
　* @author 周杨
　* @date 2019/6/13  13:33
**/
public class NonOwnerInvocationHandler implements InvocationHandler {
    private PersonBean person;
    NonOwnerInvocationHandler(PersonBean person){
        this.person = person;
    }
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //get请求一律可以放行
        if (method.getName().startsWith("get")){
            return method.invoke(person, args);
        }else if ("setHotOrNotRating".equals(method.getName())){
            //这个是特例 也放行 放行传入对象和方法参数
            return method.invoke(person, args);
        }else if (method.getName().startsWith("set")){
            return new IllegalAccessException();
        }
        return null;
    }
}
